iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
AI & Data

AI ninja project系列 第 21

AI ninja project [day 21] 自動編碼器 Autoencoders

  • 分享至 

  • xImage
  •  

可以先看看Autoencoders的構造,
https://ithelp.ithome.com.tw/upload/images/20210921/20122678ZhoXpwCwla.jpg

將原始的numpy array 或是tensor(可能是圖片、音樂或是一串數字特徵),
利用編碼器層轉換成降維的壓縮資訊,
再利用解碼器擴展成原來的維度。

參考頁面:
https://www.tensorflow.org/tutorials/generative/autoencoder?hl=zh_tw

參考colab:
https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/generative/autoencoder.ipynb?hl=zh_tw

官網的攻略主要有三個範例,
可以由第一個範例發現,通過了Autoencoders之後,
圖片會變得比較模糊。
而第二個範例是說明如何來使用Autoencoders去噪。

這裡是看到三個範例的用法,
利用心電圖資料集來建立區分正常的心電圖及異常的心電圖。

載入資料集,可以發現140的欄位為label,1代表正常的心電圖,
0代表異常,而前面欄位的特徵是由心電圖轉換而來的:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678sTjXst6JrB.png

切分訓練集 及 測試集,以及各自的標籤:
https://ithelp.ithome.com.tw/upload/images/20210921/201226787xZ2KK8CG7.png

將訓練集 及 測試集進行正規化,特徵都介於0-1之間:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678UmwflmrrA0.png

我們之後只拿正常的心電圖來訓練,
所以重點在normal_train_data、normal_test_data那兩行:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678jraJg54JBp.png

我們可以先查看一張正常的心電圖:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678KgvbEDjYvF.png

以及一張異常的心電圖:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678WlIjQeWA1M.png

搭建 Autoencoders,
優化器用adam,損失函數用mae:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678iVfzE4F2A4.png

進行訓練:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678DUFl9bmub6.png

將損失函數作圖:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678put9k7AP6I.png

以預測值及正常心電圖的平均絕對誤差作圖:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678xCcaDquJMo.png

以平均絕對誤差的平均值加上平均絕對誤差的標準差當作判斷心電圖是否正常的閾值:
https://ithelp.ithome.com.tw/upload/images/20210921/2012267860N1YX38E2.png
(選定標準可以自己建立,我是認為如果用p value說不定也可以用來建立判斷標準)

那我們可以預測心電圖是否異常:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678XOhe5Iv2A6.png

查看模型準確度:
https://ithelp.ithome.com.tw/upload/images/20210921/20122678Ty81PvSZvV.png

參考資料:
https://blog.keras.io/building-autoencoders-in-keras.html


上一篇
AI ninja project [day 20] object detection
下一篇
AI ninja project [day 22] 變分自動編碼器 Variational Autoencoder
系列文
AI ninja project30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言